{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Example-1-GP-BS-Pricing\n",
    "# Author: Matthew Dixon\n",
    "# Version: 1.0 (28.4.2020)\n",
    "# License: MIT\n",
    "# Email: matthew.dixon@iit.edu\n",
    "# Notes: tested on Mac OS X running Python 3.6.9 with the following packages:\n",
    "# scikit-learn=0.22.1, numpy=1.18.1, matplotlib=3.1.3\n",
    "# Citation: Please cite the following reference if this notebook is used for research purposes:\n",
    "# Dixon M.F., Halperin I. and P. Bilokon, Machine Learning in Finance: From Theory to Practice, Springer Graduate Textbook Series, 2020."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Overview\n",
    "The purpose of this notebook is to demonstrate the fitting of a Gaussian Process Regression model (GP) to option price data. In this notebook, European option prices are generated from the Black-Scholes model.  The notebook begins by building a GP call model, then a GP put model, and finally a portfolio holding which is short a put and long two calls. \n",
    "\n",
    "Note that the training sample size is set to 5 in order to illustrate the uncertainty bands. Seting the training sample size to a larger value, e.g. 50, will yield a much more accurate model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "from BlackScholes import bsformula\n",
    "from sklearn import gaussian_process\n",
    "from sklearn.gaussian_process.kernels import RBF\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Black-Scholes model parameters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "r = 0.0002  # risk-free rate\n",
    "S= 100      # Underlying spot\n",
    "KC = 130    # Call strike\n",
    "KP = 70     # Put strike\n",
    "sigma = 0.4 # implied volatility\n",
    "T = 2.0     # Time to maturity"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Define functions to create the Black-Scholes option prices, which we will use to train our Gaussian processes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "call = lambda x: bsformula(1, lb+(ub-lb)*x, KC, r, T, sigma, 0)[0]\n",
    "put = lambda x: bsformula(-1, lb+(ub-lb)*x, KP, r, T, sigma, 0)[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# GP Call pricer\n",
    "Generate the training and testing data, where the input is the gridded underlying and the output are the call prices. Note that the inputs are scaled to the unit domain to aid interpretation and comparison of the hyper-parameters across different experiments.\n",
    "\n",
    "A very small number of training points is used in order to emphasise the resulting uncertainties on the plots below."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "lb = 0.001           # lower bound on domain\n",
    "ub = 300             # upper bound on domain\n",
    "training_number = 5  # Number of training samples\n",
    "testing_number = 100 # Number of testing samples\n",
    "\n",
    "np.random.seed(0)\n",
    "\n",
    "train_x_1 = np.array(np.linspace(0, 1, training_number), dtype='float32').reshape(training_number, 1)\n",
    "train_y_1 = [call(S) for S in train_x_1]\n",
    "    \n",
    "test_x_1 = np.array(np.linspace(0, 1, testing_number), dtype='float32').reshape(testing_number, 1)\n",
    "test_y_1 = [call(S) for S in test_x_1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Create a Gaussian process regression estimator with an RBF kernel, and fit it to the training data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/dez/opt/anaconda3/envs/malifice/lib/python3.6/site-packages/sklearn/gaussian_process/_gpr.py:494: ConvergenceWarning: lbfgs failed to converge (status=2):\n",
      "ABNORMAL_TERMINATION_IN_LNSRCH.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "  _check_optimize_result(\"lbfgs\", opt_res)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "GaussianProcessRegressor(alpha=1e-10, copy_X_train=True,\n",
       "                         kernel=RBF(length_scale=1), n_restarts_optimizer=20,\n",
       "                         normalize_y=False, optimizer='fmin_l_bfgs_b',\n",
       "                         random_state=None)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sk_kernel = RBF(length_scale=1.0, length_scale_bounds=(1e-05, 1000.0))\n",
    "gp = gaussian_process.GaussianProcessRegressor(kernel=sk_kernel, n_restarts_optimizer=20)\n",
    "gp.fit(train_x_1, train_y_1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we can get the predicted call values for the test data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_pred_1, sigma_1 = gp.predict(test_x_1, return_std=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Comparing the GP predictions to the BS model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmQAAAFzCAYAAACQKhUCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdd3xOZ+PH8c+d2HtGEST2FsSoPWJLYkuMJKXShFhFqQ7joUWpUVHiQYOiaI2q0qIxYjVqFLUbklbtHdnn94df8zx5JLXu5M74vl+vvl6c+7rP/Y0UX9e5znVMhmEYiIiIiIjFWFk6gIiIiEhmp0ImIiIiYmEqZCIiIiIWpkImIiIiYmEqZCIiIiIWpkImIiIiYmFZLB3gVRQpUgQ7OztLxxARERF5ptDQUG7evJnka+m6kNnZ2RESEmLpGCIiIiLP5OjomOxrumQpIiIiYmEqZCIiIiIWpkImIiIiYmHpeg1ZUmJiYggPDycyMtLSUcSMcuTIga2tLVmzZrV0FBEREbPLcIUsPDycvHnzYmdnh8lksnQcMQPDMLh16xbh4eHY29tbOo6IiIjZZbhLlpGRkRQuXFhlLAMxmUwULlxYs54iIpJhZbhCBqiMZUD6noqISEaWIQuZpV27do0+ffpQtmxZ6taty+uvv86GDRsACAoKIn/+/NSuXZsqVaowadKkp94fGhpKzpw5cXBwoGrVqvj4+BAfH//Seb744gv8/PwAWLhwIcuXL092bGhoKKtWrUr4eUhICMOGDXvpzxYREZFnUyEzM8Mw6NKlC82aNePSpUscOXKENWvWEB4enjCmadOmHD16lJCQEFauXMmRI0eeOk+5cuU4duwYJ06c4PTp02zcuDHR63FxcS+Vz8fHBw8Pj2Rf/99C5ujoyLx5817qs0REROT5qJCZ2a5du8iWLRs+Pj4Jx8qUKcPQoUOfGps7d27q1q3LxYsXkz1flixZaNSoERcuXCAoKIiWLVvSp08fatSoAcDKlSupX78+Dg4OvPXWWwlFbdmyZVSsWJHmzZsTHByccL6JEycyc+ZMAC5cuICTkxO1atWiTp06XLx4kXHjxrF3714cHByYPXs2QUFBdO7cGYDbt2/TpUsXatasScOGDTlx4kTCOQcMGECLFi0oW7asCpyIiMgLynB3WSYyYgQcO2beczo4wJw5yb586tQp6tSp81ynunXrFgcPHuSDDz5IdkxERAQ7d+5k8uTJABw+fJiTJ09ib2/Pb7/9xldffUVwcDBZs2Zl8ODBfPnll7Rp04YJEyZw5MgR8ufPT8uWLaldu/ZT5+7bty/jxo2ja9euREZGEh8fz7Rp05g5cyZbtmwBnlxi/duECROoXbs2GzduZNeuXXh4eHDs/399z5w5w08//cSDBw+oVKkSvr6+2qJCRETkOaVYIRswYABbtmzBxsaGkydPAtC7d2/Onj0LwN27dylQoADHjh0jNDSUKlWqUKlSJQAaNmzIwoULUypaqhoyZAj79u0jW7Zs/PzzzwDs3buX2rVrY2Vlxbhx46hWrdpT77t48SIODg6YTCZcXV3p0KEDQUFB1K9fP2Hrh507d3LkyBHq1asHwOPHj7GxseHQoUO0aNGCokWLAk9+3c+dO5fo/A8ePOCPP/6ga9euwJN9vp5l3759fP311wC0atWKW7duce/ePQA6depE9uzZyZ49OzY2Nly7dg1bW9uX+SUTERHJdFKskHl5eeHn55dovdJXX32V8ONRo0aRP3/+hJ//vWbKrP5hJiulVKtWLaG0APj7+3Pz5s1EDxRt2rRpwgxUcpL79cidO3fCjw3DwNPTk48//jjRmI0bNz7zrkTDMP7x9ed9z9+fkz179oRj1tbWxMbGvvD5RURE0qIWLVoAia8amVuKrSFr1qwZhQoVSvI1wzBYu3Yt7u7uKfXxFtOqVSsiIyP5/PPPE45FRESkyGe1bt2a9evXc/36deDJGq/Lly/ToEEDgoKCuHXrFjExMaxbt+6p9+bLlw9bW9uEmwWioqKIiIggb968PHjwIMnPa9asGV9++SXw5H/KIkWKkC9fvhT52kRERDITiyzq37t3L8WKFaNChQoJx37//Xdq165N8+bN2bt3ryVimYXJZGLjxo3s3r0be3t76tevj6enJ9OnTzf7Z1WtWpUpU6bQtm1batasSZs2bbh69SrFixdn4sSJvP766zg5OSW7pm3FihXMmzePmjVr0qhRI/766y9q1qxJlixZqFWrFrNnz040fuLEiYSEhFCzZk3GjRtHYGCg2b8mERGRzMhkvMy1q+cUGhpK586dE9aQ/c3X15fy5cszatQo4MnszMOHDylcuDBHjhyhS5cunDp1KsnZl4CAAAICAgC4ceMGly9fTvT6b7/9RpUqVVLoKxJL0vdWREQswVyXLB0dHQkJCUnytVS/yzI2NpZvvvkm0d5bfy8GB6hbty7lypXj3LlzidZd/c3b2xtvb2+AJF8XEREReRVtmzUjf3Q0BWNiKBATA7/+yiP+U8z+Zs41ZaleyHbs2EHlypUT3YF348YNChUqhLW1NZcuXeL8+fOULVs2taOJiIhIZvL4MZw8CcePw7FjGMePw8mT/HD3bsKQxcAsoJ5Vyq7ySrFC5u7uTlBQEDdv3sTW1pZJkyYxcOBA1qxZ89Ri/j179vDhhx+SJUsWrK2tWbhwYbI3BIiIiIi8lPh4+OUX+P57jK1b4fBhTP//aMK43LmJrFiRyHbtiC1WjNiCBZkTEsLM776jdOHCFKlWjS0peJdlihWy1atXJ3n8iy++eOpY9+7d6d69e0pFERERkcwqJga++w5jwwb4/ntMN24AEFG1Kg+8vIisVo246tXJU6MG+QoUoOD/L6EaNmwY/t99R//+/QkNDeXhM7aTelUZe6d+ERERyZxOnYJlyzCWL8d04wZx+fNzv2FD7jduTEyrVthUr07RPHmwtrZO9LaoqCg8PT356quvGDVqFDNmzKBVq1YpHleFTERERDKGyEhYuZL4xYuxOnwYI0sW7jRtyi1XV3K4uFC4WDEK5syZ7ObpDx48oFu3buzYsYMZM2YwZsyYVIuuh4unkA0bNmAymThz5swrncfLy4v169f/45iPPvoo0c8bNWr0Up/13w8e/9/jJpOJCxcuJBybPXs2JpMp2dt3k/LFF1/g5+f3ymNEREQSefgQZs3CsLeHQYOIvHmTyyNGcGbHDqw3bKDc0KGUsrcnV65cyZax69ev06pVK3766SeWLVuWqIwFBQWl6C79oEKWYlavXk2TJk1Ys2ZNin/W/xay/fv3m/0zatSokehrWb9+PVWrVjX754iIiDy3O3cwJk3CKF0aRo/mfsmSnPX35+6ePbw2bRpVmjcnf/78WD3jDsnff/+dJk2acOrUKTZu3IiXl1fq5P8vKmQp4OHDhwQHB7NkyZJEJSYoKIgWLVrQo0cPKleuTN++fROeDzl58mTq1atH9erV8fb2fuq5kTt37kx4EDjAjz/+SLdu3Rg3bhyPHz/GwcGBvn37ApAnT56EcTNmzKBGjRrUqlWLcePGAbB48WLq1atHrVq16N69+3M92qlLly5s2rQJgEuXLpE/f/6Eh5fDkwJao0YNqlevztixYxOOL1u2jIoVK9K8eXOCg4MTjt+4cYPu3btTr1496tWrl+g1ERGRf/T4McaUKRhlymCaOJE71apxZtkyIr/7jnLe3pQoWTLRM5b/yYkTJ2jcuDE3b95kx44ddO7cOYXDJy1DryEbMWKE2R9Y7uDgwJxnPLR848aNtG/fnooVK1KoUCF++eWXhMcXHT16lFOnTlGiRAkaN25McHAwTZo0wc/Pjw8//BCA/v37s2XLFpydnRPO2apVK4YMGcKNGzcoWrQoy5Yt44033sDZ2Zn58+cn+XV+//33bNy4kUOHDpErVy5u374NQLdu3Rg0aBAA77//PkuWLGHo0KH/+DXly5ePUqVKcfLkSTZt2kTv3r1ZtmwZAH/++Sdjx47lyJEjFCxYkLZt27Jx40YaNGjAhAkTOHLkCPnz56dly5bUrl0bgOHDhzNy5EiaNGnClStXaNeuHb/99tvzfAtERCSzMgz46ivi33kHq7AwbjVrxjVfX4q0akWFwoWfWqD/LHv37sXZ2Zk8efKwd+9eqlWrlkLBn00zZClg9erVuLm5AeDm5pZoC5D69etja2uLlZUVDg4OhIaGAvDTTz/RoEEDatSowa5duzh16lSic5pMJvr378/KlSu5e/cuBw4coEOHDv+YY8eOHbzxxhvkypULIGFvt5MnT9K0aVNq1KjBl19++dRnJcfNzY01a9awcePGRLN1P//8My1atKBo0aJkyZKFvn37smfPHg4dOpRwPFu2bPTu3TtRNj8/PxwcHHBxceH+/fvJPtRcRESEQ4eIb9QI3N15nDMnZxYuJOarr6jUsyc2NjYvXMY2bdpEmzZteO2119i/f79Fyxhk8BmyZ81kpYRbt26xa9cuTp48iclkIi4uDpPJxIwZMwASTaFaW1sTGxtLZGQkgwcPJiQkhFKlSjFx4kQiIyOfOvffM2I5cuSgZ8+eZMnyz98+wzCSXLzo5eXFxo0bqVWrFl988cVzL1R0dnZmzJgxODo6JnrO6D89DjW5xZPx8fEcOHCAnDlzPtdni4hIJnXnDsaoUZiWLSO2cGGujB+PlZcXZcuUIVu2bC91yn//+9+89dZbODo68t1331GkSBEzh35xmiEzs/Xr1+Ph4cHly5cJDQ0lLCwMe3t79u3bl+x7/i5fRYoU4eHDh8neVVmiRAlKlCjBlClTEi04zJo1KzExMU+Nb9u2LUuXLk1YI/b3JcsHDx5QvHhxYmJi+PLLL5/7a8uZMyfTp0/nvffeS3S8QYMG7N69m5s3bxIXF8fq1atp3rw5DRo0ICgoiFu3bhETE8O6desSZZs/f37Cz819aVlERDKATZuIr1oVli8nvE8fLnz3HcXHj6dshQovVcYMw2Dq1KkMGjSIdu3asWvXrjRRxkCFzOxWr16d6HIePHkSwapVq5J9T4ECBRg0aBA1atSgS5cu1KtXL9mxffv2pVSpUonucPT29qZmzZoJi/r/1r59e1xcXHB0dMTBwSFhS4t//etfNGjQgDZt2lC5cuUX+vrc3NwS1sP9rXjx4nz88ce0bNmSWrVqUadOHVxdXSlevDgTJ07k9ddfx8nJKdH75s2bR0hICDVr1qRq1aosXLjwhXKIiEgGduMG8b17Q5cuPM6Th9PLlpFj7lyq1K9P7ty5X+qUcXFxDBs2jPfff59+/fqxadOmlz5XSjAZ/3S9KY1zdHR8ah+s3377jSpVqlgoUcrz8/Ojdu3aDBw40NJRUl1G/96KiAiwdi3xgwfDvXuEeXoSOXw4dhUrPvddk0mJiorCw8ODtWvXJuy+/6ytMFJCUr3lbxl6DVlGU7duXXLnzs2sWbMsHUVERMS8Hj3CGDoU07JlPKpShdD58ynRpg2lCxVKdj3y87h//z7dunVj586dfPLJJ4wePdqMoc1HhSwdOXLkiKUjiIiImN+JE8T36oXp3DmueHgQOXYslcqXf+lF+3+7du0aHTp04MSJEwQGBuLh4WGmwOanQiYiIiKWYRgYn38Ob79NbJ48XJg7l8K9elHKxuaVZsUALl68SLt27bh69SqbN2+mY8eOZgqdMjJkIUtuuwdJv9LxUkcREUnK/fvEv/EGVt98w5369QmbOpVyr79uloX2R48epX379sTGxrJz504aNmxohsApK8PdZZkjRw5u3bqlv8AzEMMwuHXrFjly5LB0FBERMYfz54lv0ADTpk387uvL7ZUrqdqihVnK2K5du2jevDk5cuQgODg4XZQxyIAzZLa2toSHh3Pjxg1LRxEzypEjB7a2tpaOISIir2rbNgw3N+KAc3PmULRXL4oWLWqWK1tr166lf//+VKxYkW3btlGyZMlXz5tKMlwhy5o1K/b29paOISIiIv/NMDA++QTefZeIsmW5OGsW9i1bkjdvXrOcfv78+QwbNozGjRuzefNmChYsaJbzppYMd8lSRERE0pjHj4nv2xfT2LHcbN6c31eupFK7dmYpY4Zh8P777zN06FBcXFz44Ycf0l0Zgww4QyYiIiJpyM2bxHfujOnwYUK9vYkbM4Yq9vYv/DDwpMTGxuLj48OSJUsYNGgQCxYseOZzntOq9JlaRERE0r6LF4lv3x7Cwjg7ZQr533iD1157zSzrxSIiInB3d2fz5s188MEHTJo0KV3vsKBCJiIiIuZ3+DDxnToRFxPD2XnzKNGjB4UKFTLLqW/fvo2zszMHDhzA39+fwYMHm+W8lqRCJiIiIua1eTOGmxvRhQpx7vPPsTfTejGAsLAw2rVrx8WLF1m7di09evQwy3ktTYVMREREzMZYuBCGDOFhpUr8Pm8eFRo3JmfOnGY596lTp2jfvj33799n+/bttGjRwiznTQt0l6WIiIiYhfHxx5h8fbnToAGXly2jcrNmZitjwcHBNGnShLi4OPbs2ZOhyhiokImIiMirMgyMd9/FNH4819u04fqiRVSuW/eVHw7+t02bNuHk5ISNjQ379++nVq1aZjlvWqJCJiIiIi8vPh7Dzw/TtGlcdXHh3rx5VKha1WzbTyxevJhu3bpRs2ZNgoODsbOzM8t50xoVMhEREXk5sbHEe3piWrCAcHd3Hn/6KeUqVjTLHmOGYTB58mS8vb1p164du3btokiRImYInTZpUb+IiIi8uOhoDDc3rDZsIHTQIEzjx2NfpoxZ9gKLi4tjyJAhLFq0CE9PTxYvXkzWrFnNEDrtUiETERGRFxMdjdGrF6ZNm7g0bBhZR4/G1tbWLGXs8ePH9OnTh40bNzJu3Dg++uijdL3h6/NSIRMREZHn919l7OKIEeQcM4bixYubpTTduXMHV1dX9u3bx9y5cxk2bJgZAqcPKmQiIiLyfFKwjIWHh9O+fXvOnTvHqlWrcHNzM0Pg9EOFTERERJ4tBcvY6dOnadeuHffu3WPbtm20atXKDIHTlxS7y3LAgAHY2NhQvXr1hGMTJ06kZMmSODg44ODgwNatWxNe+/jjjylfvjyVKlVi+/btKRVLREREXlQKlrG/N3yNjY1lz549mbKMQQoWMi8vL7Zt2/bU8ZEjR3Ls2DGOHTtGx44dgSfNeM2aNZw6dYpt27YxePBg4uLiUiqaiIiIPK+4OOL79XtSxoYPN2sZ27hxI05OThQpUoT9+/fj4OBghsDpU4oVsmbNmj33U903bdqEm5sb2bNnx97envLly3P48OGUiiYiIiLPIz4eY+BArNat4/chQ8j5zjtmK2OLFi2ie/fuCRu+2tvbmyFw+pXqG8POnz+fmjVrMmDAAO7cuQPAH3/8QalSpRLG2Nra8scffyT5/oCAABwdHXF0dOTGjRupkllERCTTMQyMYcMwBQZy5Y03yDJ2rFnKmGEYTJgwAR8fH9q3b8+uXbsoWrSomUKnX6layHx9fbl48SLHjh2jePHijBo1CnjyzflfyX3Dvb29CQkJISQkRN9AERGRFGK8+y4mf3/C3dwwPvzQLPuMxcbG4u3tzeTJk3njjTfYuHEjuXPnNlPi9C1VC1mxYsWwtrbGysqKQYMGJVyWtLW1JSwsLGFceHg4JUqUSM1oIiIi8v+MqVMxTZ/OVVdXYqZOpbQZduCPiIigW7du/Pvf/+a9995jyZIlGX73/ReRqoXs6tWrCT/esGFDwh2YLi4urFmzhqioKH7//XfOnz9P/fr1UzOaiIiIAHz2Gab33+d627Y8mjGDMnZ2r1zGbt26hZOTE1u2bMHf358pU6Zkit33X0SK7UPm7u5OUFAQN2/exNbWlkmTJhEUFMSxY8cwmUzY2dmxaNEiAKpVq0avXr2o+v9Ph/f39zfLg0lFRETkBaxeDcOGcatpU+7Onk358uWxsnq1uZvQ0FDat29PaGgo69evp1u3bmYKm7GYjKQWcKUTjo6OhISEWDqGiIhI+rd9O0bnztyvUYOrS5dSoUaNV54cOX78OB06dODx48ds3ryZpk2bmils+vRPvSXV77IUERGRNObQIYzu3Ymwt+fKvHmUr179lcvYrl27aNq0KdbW1uzbty/Tl7FnUSETERHJzH77DaNjR6IKFOCSvz+V6tcnS5ZXW9G0Zs0a2rdvT5kyZThw4ADVqlUzU9iMS4VMREQkswoLI75tW2KB8/7+VGjalGzZsr3SKWfPno27uzuvv/46e/fuxdbW1jxZMzgVMhERkczozh3i27XDuHOHs/PmUa5NG3LkyPHSp4uPj2fUqFG8/fbbdO/ene3bt1OgQAEzBs7YUuwuSxEREUmjIiMxXF3hwgXOzp6NnasruXLleunTRUVF4eXlxZo1axg6dCizZ8/WbgkvSIVMREQkM4mPx/DwwLR3L+cnTaJ4nz7kyZPnpU937949unbtyk8//cSMGTMYPXq09hh7CSpkIiIimYgxZgymdesIHTKEAj4+FCxY8KXP9eeff9KhQwdOnz7NihUr6NevnxmTZi4qZCIiIpnF3LmYPv2Uqz16YP3OO9jY2Lz0qU6fPk2HDh24ffs2W7dupU2bNmYMmvloUb+IiEhm8PXXGCNHcqtZMx5/9BG2pUq99Kn27dtH48aNiY6OZs+ePSpjZqBCJiIiktHt34/Rty8Pq1Xj+uzZ2JUr99LrvL755hucnJywsbFh//791K5d28xhMycVMhERkYzs4kUMV1eibGy4/NlnVKhZ86WfTzl//nx69OhBnTp1CA4Oxt7e3sxhMy8VMhERkYzq9m2MDh2Ii4nhwty5VGzU6KV24TcMg3fffZehQ4fi7OzMjh07KFKkSAoEzry0qF9ERCQjiorC6NIFIzSU8/7+lG3X7qV24Y+OjmbgwIGsXLkSHx8fPvvss1d+tJI8Tb+iIiIiGY1hYLz5Jqa9e7kwaRIlevV6qY1f79+/T/fu3dmxYwdTpkxh/Pjx2mMshaiQiYiIZDSTJmFauZIrgwZRwNeX/Pnzv/Ap/vzzTzp27MipU6dYtmwZXl5e5s8pCVTIREREMpKVK2HSJK537Ijp/fcpWrToC5/iv/cY27JlC+3atUuBoPLftKhfREQko9i3D2PgQO7VqcO9GTNeaq+xvXv30rhxY6Kioti9e7fKWCpRIRMREckILl3C6NqVqNdeI3zOHMpWrvzC673Wr19PmzZtsLGx4cCBA9SpUyeFwsr/UiETERFJ7+7dw+jcmbjoaC7NnUvFhg2xtrZ+oVPMmTOHXr16UbduXfbv3689xlKZCpmIiEh6FhuL0asXnD/PhWnTsG/XjqxZsz732+Pj4xk1ahQjR46kS5cu7Nixg8KFC6dgYEmKCpmIiEg6ZowYgemHH/h9zBiK9+lDzpw5n/u9UVFR9OnTh08//ZShQ4eybt26F3q/mI/ushQREUmv/P0x+fvzZ58+5B4+/IW2t7h79y5dunRh9+7dzJgxg9GjR2uPMQtSIRMREUmPfvwRY/hw7jZpQsy//kWJYsWe+61XrlyhY8eOnDt3jlWrVuHu7p6CQeV5qJCJiIikN2fOYPTsyWN7e/6aNYvKL7AA//jx43Ts2JFHjx6xfft2WrZsmYJB5XlpDZmIiEh6cvs2hrMzsVZWhM6bR4U6dZ77UuOOHTto2rQpVlZW7Nu3T2UsDVEhExERSS9iYjB69sS4fJmLn3xCuVatnvtB3ytWrKBDhw7Y2dlx8OBBqlevnsJh5UWokImIiKQHhoExdCimXbsIffddbHv3Jnv27M/xNoOpU6fi4eFBs2bN2Lt3LyVLlkyFwPIitIZMREQkPfD3x7RoEVf79SPf0KHkyZPnmW+JjY1l8ODBLF68mH79+rFkyRKyZcuWCmHlRWmGTEREJK3bsQNjxIgnd1ROnkyRIkWe+ZaHDx/i6urK4sWLGT9+PMuXL1cZS8M0QyYiIpKWnT+P0bMnkWXK8Nenn1LJzu6Zb/nrr7/o3LkzR48eZdGiRXh7e6d8TnklKmQiIiJp1d27GM7OxAGh8+ZR8TnuqDxz5gwdOnTg+vXrbN68mU6dOqVOVnklKmQiIiJpUVwchrs7XLzIpQULKOvk9MwHhu/btw8XFxeyZs3K7t27cXR0TKWw8qpSbA3ZgAEDsLGxSXRb7ZgxY6hcuTI1a9aka9eu3L17F4DQ0FBy5syJg4MDDg4O+Pj4pFQsERGR9OGddzBt28blMWMo4e7+zDsq165di5OTEzY2Nhw8eFBlLJ1JsULm5eXFtm3bEh1r06YNJ0+e5MSJE1SsWJGPP/444bVy5cpx7Ngxjh07xsKFC1MqloiISNq3dCl8+inXevYkz9tv/+MdlYZhMHPmTHr37k29evXYv38/9i+wc7+kDSlWyJo1a0ahQoUSHWvbtm3CBnYNGzYkPDw8pT5eREQkfQoOxvDx4X79+jz+6KN/vKMyLi6OYcOGMWbMGHr16sWPP/741N+9kj5YbNuLpUuX0qFDh4Sf//7779SuXZvmzZuzd+/eZN8XEBCAo6Mjjo6O3LhxIzWiioiIpI4rVzC6dSPqtdf449NPKVOuXLJDIyIi6N69O/Pnz2f06NGsXr2aHDlypGJYMSeLLOqfOnUqWbJkoW/fvgAUL16cK1euULhwYY4cOUKXLl04deoU+fLle+q93t7eCbfv6vq4iIhkGI8eYbi6Eh8RweVFi6jYsGGyd1Rev34dZ2dnfv75Z+bNm8fQoUNTOayYW6oXssDAQLZs2cLOnTsT/kfLnj17wmLFunXrUq5cOc6dO6fCJSIimUN8PIaXFxw/Tujcudh16JDsHZVnz56lY8eOXL16lQ0bNuDq6pq6WSVFpGoh27ZtG9OnT2f37t3kypUr4fiNGzcoVKgQ1tbWXLp0ifPnz1O2bNnUjCYiImI5//oXpvXrCR8+HBsvr2TvqNy3bx+urq5YW1sTFBRE/fr1UzmopJQUW0Pm7u7O66+/ztmzZ7G1tWXJkiX4+fnx4MED2rRpk2h7iz179lCzZk1q1apFjx49WLhwoRYliohI5vD11zBxIrc6diTruHHkzZs3yWHr1q3DycmJIkWKcPDgQZWxDMZkGIZh6RAvy9HRkZCQEEvHEBEReTnHj1GQn1UAACAASURBVGM0akREuXJcW7OGslWrPjXEMAxmzZrFmDFjaNy4MZs2baJw4cIWCCuv6p96ix4uLiIiYgnXr2O4uBCTJw9hc+diX6XKU0NiY2Px8/NjzJgx9OzZkx07dqiMZVB6dJKIiEhqi4rC6NYN4/p1Li9bRvmmTZ+6o/LRo0e4ubmxZcsWxowZw7Rp07Cy0jxKRqVCJiIikpoMAwYPxhQcTOjHH1OqS5eETdP/dvXqVZydnTl69CgLFizA19fXQmEltaiQiYiIpKa5c2HpUv56800K+fo+tZnr6dOn6dixIzdv3mTz5s106tTJQkElNWnuU0REJLVs344xahR3W7YkfsIE8ufPn+jlXbt20ahRI6Kioti9e7fKWCaiQiYiIpIazp3D6N2byPLluT5zJiVsbRO9vHz5ctq3b4+trS0HDx6kbt26FgoqlqBCJiIiktLu3sVwdibOyoor8+ZR3sEh4SXDMJg0aRKenp40bdqUffv2UaZMGQuGFUvQGjIREZGUFBuL0bs3XLpE6OLFlGvdOuFuyejoaLy9vQkMDMTLy4tFixaRLVs2CwcWS9AMmYiISEoaNQrTDz8Q/t57lOzdO+GOyrt379KhQwcCAwOZPHkyS5cuVRnLxDRDJiIiklICAmDePK737UveESPImTMnAKGhoXTs2JELFy6wfPly+vfvb+GgYmkqZCIiIilh926MIUN40LgxMVOnYlOgAACHDx/G2dmZ6OhofvjhB1q0aGHZnJIm6JKliIiIuV26hNG9O1GlSnH1008p+f+L9Ddu3EiLFi3InTs3+/fvVxmTBCpkIiIi5nT/PoaLC3GxsYT5+1OxXj0Mw2D27Nl069aNmjVrcvDgQaok8exKybxUyERERMwlLg7c3ODsWcJmzcK+TRvi4uIYOnQob7/9Nl27dmXXrl3Y2NhYOqmkMSpkIiIi5jJ6NHz/PX+MH89rffoQGRlJly5d8Pf3Z/To0axbt45cuXJZOqWkQVrULyIiYg4BATBnDjf79SPPyJHcvn2bzp078+uvv/L555/j4+Nj6YSShqmQiYiIvKqffsIYMoSHTZoQNXUqf1y+TKdOnbh37x5btmyhffv2lk4oaZwuWYqIiLyKc+ee3FFZpgx/zZnD8ZMnadKkCSaTiX379qmMyXNRIRMREXlZd+48eUYlELZgAT8cPIizszMVKlTg4MGD1KpVy9IJJZ1QIRMREXkZMTHQowf8/juhs2cz/7vv8PPzo1OnTuzZs4eSJUtaOqGkI1pDJiIi8qIMA3x9Ydcuzk2YwOj169myZQvDhw9n1qxZWFtbWzqhpDMqZCIiIi9q5kxYsoQT/fvjsXEjv/76K/Pnz2fIkCGWTibplAqZiIjIi/jmG4yxYwlu3JjeO3dy7949vv32Wzp27GjpZJKOqZCJiIg8r5AQjH792GBnh8fRoxQsVIjg4GAt3pdXpkX9IiIizyMsDMPZmTnZstHz8mUqVa7MoUOHVMbELFTIREREktCiRQtatGjx5Cf37xPbqRNDb93i7Xv3cHZ2Zs+ePZQoUcKiGSXjUCETERH5JzExPOjWDdeTJ/GPiWHkyJF8/fXX5M6d29LJJAPRGjIREZHkGAZXPD3pvHMnp62s+GzePPz8/CydSjIgFTIREZFkvH7hAvX37OFxtmys/+orunTpYulIkkGZDMMwLB3iZTk6OhISEmLpGCIikgEkrBf7f9G7d3MMKGBtTbnXX0/Y7DUoKCjVs0nG8E+9RTNkIiIi/8UwDKLPn+cgUMPKilItW/IoJsbSsSSDUyETERHhycxXdHQ0b7m788WePbhmyUIeJydWfv+9paNJJpCid1kOGDAAGxsbqlevnnDs9u3btGnThgoVKtCmTRvu3LkDPPkXybBhwyhfvjw1a9bkl19+ScloIiIiidy8eZM2zZvzxTff8GHOnBRv2ZLwx48tHUsyiRQtZF5eXmzbti3RsWnTptG6dWvOnz9P69atmTZtGgDff/8958+f5/z58wQEBODr65uS0URERBKcOXOGhg0acOjQIVZmzcobgYGc0WVKSUUpWsiaNWtGoUKFEh3btGkTnp6eAHh6erJx48aE4x4eHphMJho2bMjdu3e5evVqSsYTERFhx44dNGzYkAfh4ewymWg2bx4lu3QhHd/zJulQqm8Me+3aNYoXLw5A8eLFuX79OgB//PEHpUqVShhna2vLH3/8kdrxREQkE1m0aBHt27enlJUVh6KjsZ8wgSKenmTNmpWgoCDdUSmpJs3s1J/Uv0RMJtNTxwICAnB0dMTR0ZEbN26kRjQREclg4uLiGDFiBD4+PrS1tyf4zh1y+/iQe8QIcubMael4kgmleiErVqxYwqXIq1evYmNjAzyZEQsLC0sYFx4enuQzwry9vQkJCSEkJISiRYumTmgREckw7t+/j4uLC3PnzmV469ZsvnCBuK5dMU2eTL58+SwdTzKpVC9kLi4uBAYGAhAYGIirq2vC8eXLl2MYBgcPHiR//vwJlzZFRETMITQ0lMaNG7N9+3Y+f+stZv/0E4+bNuXRrFkU0T/yxYJSdB8yd3d3goKCuHnzJra2tkyaNIlx48bRq1cvlixZQunSpVm3bh0AHTt2ZOvWrZQvX55cuXKxbNmylIwmIiKZzP79++nSpQsxMTFsmzGD1uPH87hGDa7Pn085e3tLx5NMTo9OEhGRDG/FihW8+eablCpVii2zZlHJ05PowoW5vHIlFV9/3dLxJJP4p96SZhb1i4iImFt8fDzjx4/Hw8ODRo0acWjtWir5+BCbMydXAgKo0LChpSOKAHp0koiIZFCPHj2if//+bNiwgUGDBjH/ww/J2rIl8RERXFmxgnItWyZ5N7+IJaiQiYhIhhMWFoaLiwsnTpxg9uzZDPfyglatMMLDubx4MWU6dsTKSheJJO1QIRMRkQzl0KFDdOnShUePHvHtt9/SsUULaN8e49dfuTJ3Lra9epEli/76k7RF/zwQEZEMY9WqVTRv3pycOXNy4MABOjo5Qc+eGPv2Efbxx7w2YADZsmWzdEyRp6iQiYhIuhcfH8/7779P3759adCgAYcPH6Za5crg6Qlbt/LH++9T2NeXHDlyWDqqSJI0ZysiIunao0eP8PDw4JtvvmHgwIEsWLCAbFmzgq8vrFnD1REjyDd6NLlz57Z0VJFkqZCJiEi6FRYWhqurK8ePH3+yeH/4cEwA48fDokVcGzCAHB9+qEciSZqnQiYiIunSgQMH6Nq1K48fP36yeL9jxycv/OtfMG0aN3v0wPTRRxQsWNCyQUWeg9aQiYhIuhMYGEiLFi3IkycPBw8e/E8ZmzkTPvyQ287OxMyZg02xYpYNKvKcVMhERCTdiIuLY8yYMXh5edGkSRMOHTpElSpVnrzo7w9jxnCnbVsiPvuM4iVLWjasyAvQJUsREUkX7t+/j7u7O1u3bmXw4MHMmTOHrFmzPnlxyRLw8+Nuy5Y8WLCA0mXKWDasyAtSIRMRkTTvwoULuLi4cO7cORYsWICvr+9/XvzyS4xBg3jQqBF3FizAvlw5ywUVeUkqZCIikqbt3LmTnj17YjKZ+PHHH2nZsuV/XvzqKwxPTx46OnJj0SLKVqpkuaAir0BryEREJE0yDIPPPvuMdu3aUbJkSX7++efEZWztWoy+fXlYqxZ/LVpE2WrV9LBwSbeSLWR+fn7s378/NbOIiIgAEB0dzVtvvcWwYcPo1KkT+/fvp2zZsv8ZsHYtRp8+PKpZk6uLF1PewUFlTNK1ZAtZhQoVGDVqFHZ2dowdO5Zjx46lZi4REcmkrl+/jpOTE4sXL+a9995jw4YN5M2b9z8D1q1LKGN//vvfVKhdW2VM0r1kC9nw4cM5cOAAu3fvplChQrzxxhtUqVKFyZMnc+7cudTMKCIimcTRo0epV68eISEhrF69milTpmBl9V9/Va1bh+HuzqMaNfhj8WKVMckwnrmGrEyZMowdO5ajR4+yatUqNmzY8J89X0RERMxk7dq1NG7cmPj4ePbt24ebm9v/DvhPGfv3v6lYp47KmGQYzyxkMTExfPvtt/Tt25cOHTpQsWJFvv7669TIJiIimUB8fDzvv/8+vXv3pk6dOoSEhFCnTp3Eg5Yvx3B35+H/X6ZUGZOMJtltL3788UdWr17Nd999R/369XFzcyMgIIDcuXOnZj4REcnA7t+/T//+/dm8eTMDBw7E39+f7NmzJx4UEIDh48ODevX4a+FCKmgBv2RAyRayjz76iD59+jBz5kwKFSqUmplERCQTOH/+PK6urpw7d4558+bh5+f3dNH67DMYNox7jRtz8/PPqVC9usqYZEjJFrKffvopNXOIiEgmsn37dtzc3LC2tuaHH36gVatWTw+aMQPGjuVO8+bcXrCAclWqqIxJhqWNYUVEJNUYhsHMmTPp2LEjpUuX5ueff366jBkGTJoEY8dyq21b7gYEUFZlTDI4PTpJRERSxePHj/H29mblypX06NGDZcuWkSdPnsSD4uPh7bdh7lxudO5MxNy52Nnbq4xJhqdCJiIiKe7KlSt07dqVX375hSlTpjB+/PinS1ZsLMabb2IKDOQvNzdip0+ndKlSKmOSKaiQiYhIitq9ezc9e/YkKiqKzZs34+zs/PSgyEgMNzdMmzYR/tZbZJkwAdvixVM/rIiFaA2ZiIikCMMwmD9/Pk5OThQqVIhDhw4lXcYePMDo2BHTpk2Ejh5NjilTeE1lTDIZzZCJiIjZRUZGMmTIEJYuXUrnzp1ZuXIl+fPnf3rg9esYnTrB0aNcnDyZQn5+FCxYMPUDi1iYCpmIiJhVeHg43bt35/Dhw3zwwQdMnDgx8fMo/3bxIkb79hjh4VyYMYPigwYlfoi4SCaiQiYiImazd+9eevToQUREBF9//TXdunVLemBICEbHjsTFxHDh888p1bOnngQjmZrWkImIyCszDAN/f39atWpF/vz5OXToUPJlbNs2jBYtiM6alXNLl2Ln5qYyJpmeCpmIiLySyMhIBg4ciJ+fH+3atePw4cNUrVo16cGBgRjOzkSULMnF5csp36kTOXLkSN3AImlQqheys2fP4uDgkPBfvnz5mDNnDhMnTqRkyZIJx7du3Zra0URE5AWFhYXRrFkzli1bxgcffMDmzZspUKDA0wMNAyZPBi8v7teuzeXAQCo2b062bNlSP7RIGpTqa8gqVarEsWPHAIiLi6NkyZJ07dqVZcuWMXLkSEaPHp3akURE5CUEBQXRq1cvIiMj2bBhA126dEl6YFQUxqBBmFas4EaHDtz95BMqV6mS9EJ/kUzKor8bdu7cSbly5ShTpowlY4iIyAswDIPZs2fj5ORE4cKFOXz4cPJl7PZtjDZtMK1YwZVBg4hcuJDyVauqjIn8D4v+jlizZg3u7u4JP58/fz41a9ZkwIAB3LlzJ8n3BAQE4OjoiKOjIzdu3EitqCIiAkRERNC3b1/efvttXFxcOHToEJUrV0568IULGA0bYhw8yPlJk8g5dSqlSpfWo5BEkmAyDMOwxAdHR0dTokQJTp06RbFixbh27RpFihTBZDLxwQcfcPXqVZYuXfqP53B0dCQkJCSVEouIZG4XL16kW7du/Prrr0yZMoVx48YlP9O1dy9G167ExcZy/pNPKNm7N/ny5UvdwCJpzD/1FovNkH3//ffUqVOHYsWKAVCsWDGsra2xsrJi0KBBHD582FLRRETkf2zduhVHR0fCwsLYunUr48ePT76M/fvfGK1bE5k7N2cDA7Hr109lTOQZLFbIVq9enehy5dWrVxN+vGHDBqpXr26JWCIi8l/i4+OZNGkSnTt3xs7OjiNHjtC+ffukB8fGYgwdCoMGca9OHS59+SUVOnQgZ86cqRtaJB2yyE79ERER/PjjjyxatCjh2DvvvMOxY8cwmUzY2dklek1ERFLfnTt36N+/P9999x0eHh58/vnn5MqVK+nBt29j9OyJadcu/nRz4/HEiVQuXx5ra+vUDS2STlmkkOXKlYtbt24lOrZixQpLRBERkSScOHGCrl27cuXKFfz9/fH19U1+Mf7p0xjOzhhhYVwcP57cfn6Ufe01Ld4XeQF6lqWIiCSyfPlyfHx8KFCgALt376ZRo0bJD/7mGwxPT2KzZ+fC559TvHv3pDeGFZF/pI1gREQEgKioKAYPHoynpyf169fn6NGjyZexuDiMceOge3celS7N2ZUrsevTR2VM5CVphkxERAgLC6Nnz54cOnSI0aNH8/HHH5MlSzJ/Rdy8ieHmhmnnTv5ydeXe5MlUrlo1+fEi8kz63SMiksnt3LkTNzc3IiMjWbduHT169Eh+8JEjGF27Yly7xsVx48g1dCgVixfXejGRV6RLliIimVR8fDwfffQRbdu2pWjRovz888/JlzHDgIAAjMaNiY6O5reAAIqMHUuJEiVUxkTMQDNkIiKZ0J07d/Dw8GDLli24u7sTEBBAnjx5kh788CGGtzem1au526AB4R99RIVGjciRI0fqhhbJwFTIREQymV9++YUePXoQHh7OZ599xpAhQ5Kf5fr1V+J79MB04QKXvb2JGzOGqvb22l9MxMx0yVJEJJMwDIMlS5bQqFEjYmJi2LNnD35+fkmXMcOApUsx6tcn9tYtfvvsM3JNmYJ9uXIqYyIpQIVMRCQTiIiI4I033uDNN9+kWbNm/PLLLzRs2DDpwffvY/TrBwMHcq96dc6uWYOdlxdFixbVejGRFKJLliIiGdzZs2fp2bMnJ0+eZMKECXzwwQfJz3IdOkS8uzumK1e4/OabxI4ZQ5WyZbWlhUgK0+8wEZEMbO3atQwcOJDs2bOzbds22rZtm/TAuDiM6dNhwgRiihblwuefU6xrVwoXLqxZMZFUoEuWIiIZUHR0NMOGDaN3797UqFGDo0ePJl/G/viDeCcnTO+9x61mzTj31VeU7dePIkWKqIyJpBLNkImIZDChoaH06tWLn3/+mZEjRzJ9+nSyZs2a9OC1azF8fDAeP+bCu++S3ceHqiVLauG+SCpTIRMRyUA2b96Mp6cnhmHw9ddf061bt6QH3r2LMWQIplWreFi1KpcnT8a2dWs9i1LEQnTJUkQkA4iJiWHMmDG4urpStmxZjhw5knwZ27mT+OrV4auvuDJwIH+tX08lFxeVMRELUiETEUnnwsLCaNGiBTNnzmTw4MEEBwdTrly5pwdGRGCMGAFOTkRZW/PbkiXknj6d8pUrJ39JU0RShS5ZioikY9999x0eHh5ER0ezevVq3Nzckh4YHEy8lxdWFy7wZ/fu3B03jnI1apA9e/bUDSwiSdIMmYhIOhQTE8M777xD586dKVWqFEeOHEm6jEVEYIwcidG0KTGPHvGbvz/W/v5UqVtXZUwkDdEMmYhIOnPlyhXc3Nw4cOAAPj4+zJ49O+kHff/XrNjVrl25M24c9jVqkDNnztQPLSL/SIVMRCQd+fbbb/H09CQ2NpY1a9bQu3fvpwc9eIAxfjz4+xPz2mtc8venUPfuVLGx0b5iImmULlmKiKQD0dHRvP3227i4uFCmTBmOHDmSdBnbupX4qlXB35+/unXj0qZN2A8YQLFixVTGRNIwzZCJiKRxFy9exM3NjZCQEPz8/Pjkk0+evkR54wbGsGGY1qwh0t6e0MWLKeriQmXtti+SLqiQiYikYV999RXe3t5YWVklvdGrYcDy5Rhvv41x/z5hAwcSNWIE5StWJFu2bJYJLSIvTIVMRCQNevz4MSNGjCAgIICGDRuyevVq7OzsEg/67TcMHx9Me/bwsHp1rixcSAknJ0oVKKBZMZF0RoVMRCSNOXnyJG5ubpw6dYp33nmHKVOmJN649fFjjClT4JNPiMuZkyvjxmE1aBCVSpcmSxb9sS6SHul3rohIGmEYBosWLWLkyJHkz5+f7du307Zt28SDtm/HGDwY06VL3GjfnuvvvINd/frkzp3bMqFFxCx0l6WISBpw584devbsia+vL82bN+f48eOJy9iVKxjdukH79kTGxnLG3x8jMJAqzZurjIlkAJohExGxsODgYPr06cOff/7JJ598wttvv42V1f//ezkqCmbNwpgyBcMwCPPxIWrIEMpq0b5IhqJCJiJiIbGxsUyZMoV//etf2NnZsX//furVq/efAdu2YQwdiunCBW63bMlfY8ZQukkT8ubNa7nQIpIiVMhERCzg8uXL9O3bl+DgYDw8PJg/f/5/itaFCxgjR2LasoWo0qW58tln5O/ZkypFi/5n5kxEMhQVMhGRVLZ27Vq8vb2Jj4/nyy+/pE+fPk9eePAApk7FmD2b+CxZ+GPIEKJ9fbGrUEGXJ0UyOBUyEZFU8vDhQ4YPH87SpUtp0KABq1atomzZshAfDytXYowbh+nqVW526sSNkSMp07ChFuyLZBIWK2R2dnbkzZsXa2trsmTJQkhICLdv36Z3796EhoZiZ2fH2rVrKViwoKUiioiYzaFDh+jbty+///477733HhMmTHiyt1hwMMaIEZhCQnhUrRrhH3+MjbMzVQoW1OauIpmIRRcj/PTTTxw7doyQkBAApk2bRuvWrTl//jytW7dm2rRplownIvLK4uLimDJlCo0bNyYmJoagoKAnG72Gh2P06gVNmhBz+TK/T5zI3a1bqdCvH4UKFVIZE8lk0tQly02bNhEUFASAp6cnLVq0YPr06ZYNJSLyki5fvky/fv3Yt28f7u7uLFiwgAJWVjBuHMacORgmE396exPh60uZqlW1TkwkE7PYDJnJZKJt27bUrVuXgIAAAK5du0bx4sUBKF68ONevX3/qfQEBATg6OuLo6MiNGzdSNbOIyPMwDIOVK1dSs2ZNjh8/zsqVK1kVGEiBVaswypeH6dO55eTE2W+/peDs2VRwcFAZE8nkLDZDFhwcTIkSJbh+/Tpt2rShcuXKz/U+b29vvL29AXB0dEzJiCIiL+z27dv4+vqydu1aGjduzIrly7E/eRKjRg1MZ8/ysG5d/pw9m9c6d6Zyvny6NCkigAULWYkSJQCwsbGha9euHD58mGLFinH16lWKFy/O1atXsbGxsVQ8EZEXtmPHDry8vLh27RpTp05lbOvWWA0YALt3E2Vnxx+zZ5PX3Z0K2k9MRP6HRf5EePToEQ8ePEj48Q8//ED16tVxcXEhMDAQgMDAQFxdXS0RT0TkhURGRjJy5EjatGlDnjx5OLh+PeNPnMC6YUPiTpwg7N13ub5jB3ZDh2JTrJjKmIg8xSIzZNeuXaNr167Ak0eH9OnTh/bt21OvXj169erFkiVLKF26NOvWrbNEPBGR5/bLL7/Qv39/Tp8+zZABA5iRLRs5e/YkPksWrr/5Jg99fSlTo8aTLS5ERJJhkUJWtmxZjh8//tTxwoULs3PnTgskEhF5MbGxsUybNo1JkyZRtEgRvvfwoN26dRARwe0uXbjp50eZhg15LUcOS0cVkXQgTW17ISKSHpw/fx4PDw8OHjxI77p18b9yhcLLl3OvZUuujRhBydatqaQd9kXkBWghg4jIc4qPj2fBggU4ODhw5tdfWWVjw5ojR8hRqhQXV6yADRuo6OKixx2JyAvTDJmIyH9p0aIFQMIm1X+7cuUKAwcOZMeOHbTNm5elDx5QqGRJQidMIE/PnpQtUkRbWIjIS1MhExH5B4ZhEBgYyHA/P+IeP2Yh4JU3L9fffZe7Hh6UKVFCRUxEXpkKmYhIMv766y+83dz4dvdumgGLCxQg7+DBXHvjDWzLltX2FSJiNipkIiL/wzAMVn36KUPffZdH0dHMzJ6dvm+9xeNBg7CpUgVra2tLRxSRDEaFTEQytb/XjP3tzO7dvAb03bOHBkBfOztCqldn+KxZZMmiPzJFJGXoTxcRESBfVBR2587xK3AGGFCoEPH167MhKor4Bw9UxkQkRelPGBHJ1II2beKvSZMYMm8en8XFUSVbNmrUq4f/jh3k0KauIpJKVMhEJHN69Ahj7lxWTJ3KiIgIIqyseMfLi5ArV7gWF6cyJiKpSrcIiUjmEhkJc+cSVqYMnd97D8+ICOwrVWL/zz8zfdky4uLiLJ1QRDIhFTIRyRxiYiAggPjy5Vk8YgTV797lp+zZmTZtGodPnaJOnTqWTigimZguWYpIxhYXB19+iTFpEhcvXWJgnjzsAZq8/jqBgYGULVs20fD/3aFfRCQ1aIZMRDKm+HhYtw6jenViPT356MEDqmfNylGTiYULF7Jnz56nypiIiKWokIlIxmIY8O23GHXqQK9eHH7wgNolS/L+jRt06NSJM2fO8NZbb+lxRyKSpqiQiUjGYBjw448YDRuCiwt3b95kcLNmNP7rL27ExrJ+/Xq++eYbSpQoYemkIiJPUSETkfRvzx6MFi2gbVtiwsL4sl8/HKyt+XzPHjw9Pfntt9/o3r27ZsVEJM3Son4RSb8OHcL44ANMP/5IbJEinPLzY9KVK2xcuZJKlSoRFBRE8+bNLZ1SROSZVMhEJP05dgzjww8xffstcQUL8teIEawqVIjpc+bw4MEDJkyYwLvvvkv27NktnVRE5LmokIlI+nH6NMaECZjWrycub16u+fpyvGVLPp43j3379tGkSRMCAgKoUqWKpZOKiLwQrSETkbTv/HmMfv0wqlcnfutW/nzzTU5++y1zcufGtU8fTp8+zZIlS9i9e7fKmIikS5ohE5G06/JljMmTITAQI2tWrvXrx/+1d+9xVdX5/sdf+4Jc5KYiCOKgXEwEgRR1TmmhpXamohpNHSs1SzvarylvNdWp9IxGNo5lR2vGac6MVqPzG7uQaWZm4zhakiiNeSkjScQboCh32Ht/zx8oaUnHUlgg7+fjsR5rs1m4P/vjV/f7sb7ftSiZOJE9hYVMHz+evLw87r77bp599llCQkKsrlZE5EdTIBOR5ufQIcycOfDyyxigcMQIjt93HyYsjMcee4zMzEzi4+PZuHEj11xzjdXViohcNE1ZikjzcewYZupUTEwM/OEPcvb1ewAAG3VJREFUFN50E5+/8w7OxYt5Y8sWUlNTef/998nIyCAnJ0dhTEQuGzpDJiLWO34c5s/HvPACVFZS9O//TtHkyXQeOJADH33ELf/2b+zbt4/hw4fz3HPP0aVLF6srFhG5pBTIRMQ6p07Bc89hFiyA0lKKr7+eY5MnE56Whk9JCXfffTdvvPEGcXFxrF27lmHDhlldsYhIo1AgE5GmV14OixZhnn0W2/HjnLj2Wo5MnkzY9dcT5ePD/PnzeeaZZ7Db7cyZM4cZM2bonmIicllTIBORplNVBb/7Hebpp7EVFlJy1VUcmTyZjjfcwBXt2pGZmcm0adP4+uuvGTlyJPPnz9f0pIi0CgpkItL4amrgj3/E8+tfYz98mFN9+nAoI4P2N91E95AQ9uzZwy9+8QvWr19PYmIiH374IWlpaVZXLSLSZHSVpYg0ntrauiAWFwdTplAWGsrel16iYtUq4saNw+Fw8MADD5CcnEx2djYvvPACO3bsUBgTkVZHZ8hE5NJzu2H5cjyzZmHPzaUiPp6ChQtpe9ttxHTqBMCiRYuYPXs2paWlTJkyhVmzZtGhQweLCxcRsYYCmYhcOh4PvP46niefxL53L5VxcRx89ll8R46kW3g4Xl5evPPOO8ycOZPPP/+coUOHsmDBAhISEqyuXETEUk0+ZZmfn8+gQYOIj48nISGBhQsXAjBr1iw6d+5MSkoKKSkprFmzpqlLE5EfyxjIzMSTkgIjR1JVVcUXc+dy7N136frLX/KTqCh27drFddddR3p6OgCrVq1i7dq1CmMiIlhwhszpdPLb3/6W3r17U1paSp8+fRgyZAgAU6dOZcaMGU1dkoj8WMbA2rV4nngCe3Y21ZGRHJw1C8eYMfykSxd8fHwoKCjg8ccfZ9myZXTo0IFFixYxadIkvLy8rK5eRKTZaPJAFh4eTnh4OAABAQHEx8dTUFDQ1GWIyMUwBj74oC6IffwxNeHhHHzsMbjrLiKjovD19eXUqVPMmTOHBQsW4Ha7mTlzJo899hhBQUFWVy8i0uxYepVlXl4eO3bsoH///kDdIt+kpCQmTJjAiRMnrCxNRBqycSOea6+FIUOo/eorcmfO5MC6dUQ8/jixPXrgcDh44YUXiImJYe7cudxyyy3s3buXefPmKYyJiDTAskBWVlbG8OHDef755wkMDGTy5Mnk5uaSk5NDeHg406dPP+/PLVmyhNTUVFJTUyksLGziqkVasc2b8QwaBGlpuPbs4auHHmL/e+/R6amn6J6YiI+PD8uXL6dHjx48+OCDJCcns23bNpYvX063bt2srl5EpFmzGWNMU79obW0tN910E8OGDWPatGnf+X5eXh433XQTn3322ff+OampqWzbtq2xyhQRgI8/rpuaXL+e2nbtyL/rLqrHjSMyLo6AgACMMbz33ns89thj7Nixg+TkZObNm8fQoUOx2WxWVy8i0mx8X25p8jVkxhjuuece4uPjzwljhw8frl9b9uabb5KYmNjUpYnI2bKy8Dz1FPa1a3EHB/P1lClUjh9Plx498Pf3x2azsXnzZh599FE2bdpEt27dWLZsGXfccQd2u+45LSLyQzR5INu8eTOvvPIKvXr1IiUlBYCnn36a5cuXk5OTg81mo2vXrvz+979v6tJEBCA7u+4+YmvW4AkM5MB991ExYQKRPXoQEBCAzWYjJyeHxx9/nDVr1tCpUycWL17MvffeS5s2bayuXkSkRWryQDZgwADON0v6s5/9rKlLEZGzbd9eF8RWr64LYhMnUj5hApHx8UQFBmKz2di1axezZs1i5cqVBAcHk5GRwQMPPEDbtm2trl5EpEXTnfpFWrvs7LqpydWr8QQEkH/vvZTefTddEhLqg9jevXuZPXs2f/3rX/H39+eJJ55g6tSptGvXzurqRUQuCwpkIq3V2UEsMLAuiI0fT5fERH5yOoh98cUXzJkzh9deew0fHx8eeeQRZsyYod85KSJyiSmQibQ2WVl4Zs/+Zo3YxImUjR9Pl4SE+iC2e/du5s6dy4oVK/D29mbq1Kk8/PDDhIaGWl29iMhlSYFMpLXYsqUuiK1b980ZsW9NTe7cuZM5c+bwt7/9DT8/P6ZPn8706dMJCwuzunoRkcuaApnI5W7TprqpyQ8/rLt9xX/8BxXjxhEZH19/Rmzr1q1kZGSQmZlJQEAAjz76KFOnTiUkJMTq6kVEWgUFMpHLkTGwfj2e//ov7P/8J6727Sm4/34qxo6lS48edA0IAOCDDz4gIyODDRs20K5dO5588kkefPBB2rdvb/EbEBFpXRTIRC4nxsCqVXjmzMH+ySe4Onbk4EMPUXXHHUR2707XgAA8Hg9vvPEGzzzzDNu2bSM8PJz58+czadIkAk4HNRERaVoKZCKXA7cb/vY3PE8/jX3nTmoiIjj4yCO4x4whols3/P39qays5KWXXmLBggXk5uYSExPDkiVLGDt2LN7e3la/AxGRVk2BTKQlq66GZcvwzJuHPTeX6qgoDj7xBPziF0T85Ce0bduWwsJC5s+fz+LFiykuLqZ///7MmzePW2+9FYfDYfU7EBERFMhEWqayMliyBM/8+dgPH6aiRw8KMjLwGjGCzhER+Pn5sXPnThYuXMirr75KdXU16enpzJw5k6uvvlq/9FtEpJlRIBNpSY4dwyxcCC++iK2khNLevTn86KP4pafTtVMnnE4nq1evZuHChWzYsAFfX1/Gjx/PQw89RI8ePayuXkREGqBAJtIS5OZifvMbWLoUqqs5PnAgR8eNI/iGG4gOCaG8vJzFixfz4osvkpubS5cuXZg3bx733nuvrpgUEWkBFMhEmrOtW/HMn4/tjTcwDgeFN9xA0fjxdBwwgO7t2/Ovf/2LJ554guXLl1NZWcnVV19NRkYGt912G06n/nmLiLQU+h9bpLlxu+Htt+vWh23ZgsffnyNjxlAydiwRffoQ1aYNr7/+Oi+99BJbt27Fz8+Pu+66iylTppCcnGx19SIi8iMokIk0F2VlsHQpngULsH/1FbXh4Rx+6CGq77iD8O7dKfrqK5588kleffVVTp48yRVXXMHChQsZO3YswcHBVlcvIiIXQYFMxGpff4357/+Gl1/GdvIkFQkJHHn6aZy3345vQADrV63iD/ffT1ZWFt7e3owYMYKJEydyzTXX6GpJEZHLhAKZiBWMgc2bMc89B2+9BTYbx9PSKBwzhoChQ8ndtYtXZ8/m9ddfp7Kykp49e/L8889z1113aZG+iMhlSIFMpCmVl8Nf/oJZvBjbp5/iDgzk2J13UjJmDGXt2vH222/zytVXc+DAAYKCghg3bhzjx4+nX79+OhsmInIZUyATaQr79sFLL2H+9CdsJSVUxsVx7NFHKRg8mE3btrHy8cfJzs7GZrMxdOhQ5s2bxy233IKvr6/VlYuISBNQIBNpLLW1sGoV5ne/w/b++xink+ODB/PljTfyz5oa1rz7Lh8+8wzGGPr06cOCBQsYNWoUERERVlcuIiJNTIFM5FLLy4M//AHzP/+D7cgRasPC+GLcON7q2JEPt29n47RpuN1uYmJi+M///E/GjBmju+iLiLRyCmQil0J1Nbz9NuaPf4R168Bm4/PUVP7/gAF8cPQoW157DZfLRXR0NDNmzGDkyJFceeWVWhcmIiKAApnIxdmxA/70J8xrr8Hx4+zs0IEVqamsKS3l06wsyMoiNjaWadOmMXLkSHr37q0QJiIi36FAJnJaWloaAH//+9+//8AjR2D5csyyZVTn5LDB6eStiAjes9s5UFQExcWkpqYyd+5cbr31VuLj4xXCRETkeymQiVyI8nJ46y3MK6/wxbp1vG8M7/r786GXF5W1tfgWFjJ48GAe+dnPuPnmm+nSpYvVFYuISAuiQCbSkOpqWLeOwqVL+eCdd1hfXc37DgcHjAGga0gIE268kRtvvJG0tDTdokJERH40BTKRszg8Ho6tWMHG3/+eD7dsYWNNDbtPfy/Qz4+BaWk8cuONDBs2jJiYGEtrFRGRy4cCmbRaaWlpGGNwlZXR7sgRPIcOcQgI27QJAF+bjcjgYH41aRI3pafTv39/nE79kxERkUtPny7SqhQWFvLJJ5+wbdMmDm/bxpGKCk6dnoJsB8Q4nQwLD6eqSxfw8gIgY948CysWEZHWQIFMLkvGGA4dOsSnn35KTk4OO3bs4JMtW/j60CEAbEA8MNzHhyuTkuh58828sGULpVVVrN2wwdLaRUSk9VEgkxavpKSE3bt3s3v3bnbt2sXOnTvJycmhuLi4/phuDgf93W7+H5AUFUXcddfBkCH4XXstIaGhOBwOfn36thciIiJNrdUHsgu+95RYqra2lv3797Nv3z6++OKL+v2ePXs4dPqsF4Cvtzc927XjFpuNZOBKIKFtWxw//SllAwdSOWgQHZOTCQwM1L3BRESk2Wj1gUyah4qKCgoKCjh48CD5+fns37+fvLy8+i0/Px+3211/fHBwMHHR0Vzfsyc9u3en55Ej9PzyS7pWV2MvKqK8Vy/Kbr+d8quuonLgQEI6dSLI29vCdygiItKwZhfI1q5dy4MPPojb7ebee+/lV7/6ldUlyY9UVVVFcXExRUVFFBcXc/ToUY4cOcLRo0frHx86dIiDBw9y/Pjxc37WZrMRERFB165dufrqq+nWtStxgYHElZYSe+AA7XfswJ6Tg83jwTidVMTHU3bnnXydmoptwABCoqMJbdsWu91+wfXqLKmIiFilWQUyt9vN/fffz/vvv09kZCR9+/YlPT2dnj17Wl3aZc8YQ01NDdXV1VRVVVFZWUlFRUX9vqKigvLyckpLSykrK6OsrIzS0lJOnTrFyZMnKSkpqd9OnDhBcXEx5eXl530tLy8vwsLCCAsLqw9ckZGR32ydOxPlcuG9axcmOxuTnQ1r1mA/cQIAd9u2lCUmUj5hAhV9+uAcOJD2XbrQwc+PMN2WQkREWqBm9emVdfoXMUdHRwMwevRoMjMzL2kgS/vWwu3qjRupAfq2bUuN3U613U6N3U7vq64Cb2/4AWdY/i/m9O0VLvS58+09Hg/GmHMeezyecza3212/uVyu+r3L5aK2tvY7W3V1NTU1NT/4/dhsNgIDAwkODiY4OJigoCCioqJITk6mQ4cOhISEnLM/E8LatWv3zfqt4mL47DP47DM8mzdjPvsM22efYT91qu49O51UxsRQPnAgFb16Ud27NwH9+hEQFESor6/uCyYiIpeFZvVpVlBQcM7vAIyMjGTr1q3nHLNkyRKWLFkC1N1T6mI4PB6KqGuCo6ICTj92AnvXrDl9kAOczrrNy+ubx9/eHI4Les3zLST/vue+vbfb7dhstvq9zWbD4XBgt9vrN6fTicPhqN+f2by8vM67+fj44O3tfc7m5+eHr69v/d7X1xd/f38CAgLq976+vhe2MP7UKcjLg9278bz1Fu69e2HfPuxffon9rL9DT0AAFdHRVFx3HZXx8dQkJuLTpw+BHTsS4ONDiLf3D5qCFBERaSmaVSA739mib3/gT5o0iUmTJgGQmpr6g1/j2+uE0tLScDgcvP7Xv1KTn4/74EFcBw5gP3oUr6IiHEVFOAsL8SosxFlUhLO4GLvL9d3aHQ5Mhw6Yjh0xoaEQEgKhodg6dsQWEoL9zHPt23+z+flBS77Szxg4eRIOH4bDhzEFBXgKCjD5+Zivv8Z24AD2Awewl5TU/4gdcHXoQGVkJJX9+lEVE0NtXBwmIYG2cXH4tW1LoLc3Hb29cVxgyBUREWnpmlUgi4yMJD8/v/7rgwcPEhER0eiv63a7CQ4JqQtMV175ne8bY6itrcXlclFZU0PtsWNU5+fjys/HdvQo9qIiHMXFOI8fx3n8OF7HjuH84gucJ0/iKCtr8HVNmzZ4goMxgYGYoCA4sw8OxhYQAP7+EBAAAQHY/P2xBQRg8/Wt2/z8wNcXfHy+OXPn5fXNZrN9E/bOPPZ4wOU6d6upgcpKqKzEVFTUbZWVmJISzKlTcPIk5uTJuuB1/Di24mIoLsZeXIz9+HFsZ0112gAH4Pb1pbpTJ6rCwqhOS6MmIgJXRAQ1Xbvi7NEDv7Aw/Pz88G/ThvZt2uDl5aVbUIiISKvWrAJZ37592bdvH/v376dz586sWLGCv/zlL1aXhc1mo02bNrRp06burFZwMHTvfs4xxphz1m1Vu1yUu1zUlJXhPnYM15EjuI8exVZSgv3ECRwnT+I4eRL76dDmLC3FceQIzi+/xFlejr2yEkdlZdO+z9Pbt3mcTtxt21IbGEhtYCA1QUG4oqJwBQXhbt+e2o4dcYeFYTp1wh4ZiVf79nh7e+Pr60vAWVOjOuMlIiJyfs0qkDmdThYtWsSwYcNwu91MmDCBhIQEq8u6IDabDafTidPpxPvs+1116ABRUecce2Yh/tmL791uN26Ph+qzFt+7amrwlJVhSkvrtrIyTGUltspKbFVV2KuroaoKm8uFze2u25/eMAYD2Iypm1o0pm5a1eGoXxdnHA6M04nx8cHj7V2/9/j61p2ZCwzEHhyMw8+v/r15eXnRpk0bfE+vSzt7vZrWd4mIiPw4NnO+hVstRGpqKtu2bbO6DEt8+yrLM8+d2c4+7mxnXyRw9uNvXywgIiIil9b35ZZmdYZMLtyZqytFRESk5dMck4iIiIjFFMhERERELKZAJiIiImIxBTIRERERiymQiYiIiFhMgUxERETEYgpkIiIiIhZTIBMRERGxmAKZiIiIiMUUyEREREQspkAmIiIiYjEFMhERERGLKZCJiIiIWMxmjDFWF/FjhYSE0LVr14v+cwoLC+nYsePFFyTfod42HvW28ai3jUv9bTzqbeO5FL3Ny8ujqKjovN9r0YHsUklNTWXbtm1Wl3FZUm8bj3rbeNTbxqX+Nh71tvE0dm81ZSkiIiJiMQUyEREREYs5Zs2aNcvqIpqDPn36WF3CZUu9bTzqbeNRbxuX+tt41NvG05i91RoyEREREYtpylJERETEYq06kK1du5YrrriC2NhYnnnmGavLafG6du1Kr169SElJITU1FYDjx48zZMgQ4uLiGDJkCCdOnLC4ypZjwoQJhIaGkpiYWP9cQ/00xvDLX/6S2NhYkpKS2L59u1Vltwjn6+2sWbPo3LkzKSkppKSksGbNmvrvZWRkEBsbyxVXXMF7771nRcktRn5+PoMGDSI+Pp6EhAQWLlwIaOxeCg31VmP34lVVVdGvXz+Sk5NJSEjgqaeeAmD//v3079+fuLg4Ro0aRU1NDQDV1dWMGjWK2NhY+vfvT15e3sUXYVopl8tloqOjTW5urqmurjZJSUlm165dVpfVokVFRZnCwsJznps5c6bJyMgwxhiTkZFhHn74YStKa5E2btxosrOzTUJCQv1zDfVz9erV5oYbbjAej8d89NFHpl+/fpbU3FKcr7dPPfWU+c1vfvOdY3ft2mWSkpJMVVWV+eqrr0x0dLRxuVxNWW6LcujQIZOdnW2MMebUqVMmLi7O7Nq1S2P3Emiotxq7F8/j8ZjS0lJjjDE1NTWmX79+5qOPPjK33367Wb58uTHGmPvuu8+8+OKLxhhjFi9ebO677z5jjDHLly83I0eOvOgaWu0ZsqysLGJjY4mOjqZNmzaMHj2azMxMq8u67GRmZjJu3DgAxo0bx1tvvWVxRS3HNddcQ/v27c95rqF+ZmZmMnbsWGw2Gz/96U8pKSnh8OHDTV5zS3G+3jYkMzOT0aNH4+3tTbdu3YiNjSUrK6uRK2y5wsPD6d27NwABAQHEx8dTUFCgsXsJNNTbhmjsXjibzYa/vz8AtbW11NbWYrPZ2LBhAyNGjAC+O27PjOcRI0bwwQcfYC5ySX6rDWQFBQV06dKl/uvIyMjvHdjyf7PZbAwdOpQ+ffqwZMkSAI4ePUp4eDhQ95/JsWPHrCyxxWuonxrPl8aiRYtISkpiwoQJ9VNq6u2Pl5eXx44dO+jfv7/G7iV2dm9BY/dScLvdpKSkEBoaypAhQ4iJiSE4OBin0wmc27+ze+t0OgkKCqK4uPiiXr/VBrLzJVmbzWZBJZePzZs3s337dt59910WL17MP/7xD6tLajU0ni/e5MmTyc3NJScnh/DwcKZPnw6otz9WWVkZw4cP5/nnnycwMLDB49TfH+7bvdXYvTQcDgc5OTkcPHiQrKws9uzZ851jzvSvMXrbagNZZGQk+fn59V8fPHiQiIgICytq+c70LzQ0lNtuu42srCzCwsLqpx8OHz5MaGiolSW2eA31U+P54oWFheFwOLDb7UycOLF+ake9/eFqa2sZPnw4d9xxBz//+c8Bjd1LpaHeauxeOsHBwaSlpfHxxx9TUlKCy+UCzu3f2b11uVycPHnygpdBNKTVBrK+ffuyb98+9u/fT01NDStWrCA9Pd3qslqs8vJySktL6x+vW7eOxMRE0tPTWbp0KQBLly7llltusbLMFq+hfqanp7Ns2TKMMXz88ccEBQXVTw/JhTl73dKbb75ZfwVmeno6K1asoLq6mv3797Nv3z769etnVZnNnjGGe+65h/j4eKZNm1b/vMbuxWuotxq7F6+wsJCSkhIAKisrWb9+PfHx8QwaNIiVK1cC3x23Z8bzypUrGTx48MWffbzoywJasNWrV5u4uDgTHR1t5syZY3U5LVpubq5JSkoySUlJpmfPnvX9LCoqMoMHDzaxsbFm8ODBpri42OJKW47Ro0ebTp06GafTaTp37mxefvnlBvvp8XjMlClTTHR0tElMTDSffPKJxdU3b+fr7Z133mkSExNNr169zM0332wOHTpUf/ycOXNMdHS06d69u1mzZo2FlTd/mzZtMoDp1auXSU5ONsnJyWb16tUau5dAQ73V2L14n376qUlJSTG9evUyCQkJZvbs2caYus+2vn37mpiYGDNixAhTVVVljDGmsrLSjBgxwsTExJi+ffua3Nzci65Bd+oXERERsVirnbIUERERaS4UyEREREQspkAmIiIiYjEFMhERERGLKZCJiIiIWEyBTETkLHPnziUhIYGkpCRSUlLYunWr1SWJSCvgtLoAEZHm4qOPPuKdd95h+/bteHt7U1RURE1NjdVliUgroEAmInLa4cOHCQkJwdvbG4CQkBCLKxKR1kI3hhUROa2srIwBAwZQUVHB9ddfz6hRo7j22mutLktEWgGtIRMROc3f35/s7GyWLFlCx44dGTVqFH/+85+tLktEWgGdIRMRacDKlStZunQpq1atsroUEbnM6QyZiMhpn3/+Ofv27av/Oicnh6ioKAsrEpHWQov6RUROKysr44EHHqCkpASn00lsbCxLliyxuiwRaQU0ZSkiIiJiMU1ZioiIiFhMgUxERETEYgpkIiIiIhZTIBMRERGxmAKZiIiIiMUUyEREREQspkAmIiIiYjEFMhERERGL/S/5MJMMxXeUtwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize = (10, 6), facecolor='white', edgecolor='black')\n",
    "plt.plot(lb+(ub-lb)*test_x_1.flatten(), y_pred_1, color = 'red', label = 'GP Prediction')\n",
    "plt.plot(lb+(ub-lb)*test_x_1.flatten(), test_y_1, color = 'black', label = 'Analytical Model')\n",
    "plt.scatter(lb+(ub-lb)*train_x_1, train_y_1, color = 'black', marker = '+', s = 100) \n",
    "plt.fill_between(lb+(ub-lb)*test_x_1.flatten(), (y_pred_1.T-2*sigma_1).flatten(), (y_pred_1.T+2*sigma_1).flatten(), color = 'grey', alpha=0.3)\n",
    "plt.legend(loc = 'best', prop={'size':10})\n",
    "plt.xlim([lb-10, ub+10])\n",
    "plt.xlabel('S')\n",
    "plt.ylabel('V');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# GP Put pricer"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we repeat the process to create a GP modelling the value of a put. First, create the training and testing data with the Black-Scholes prices"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_x_2 = np.array(np.linspace(0,1, training_number), dtype='float32').reshape(training_number, 1)\n",
    "train_y_2 = [put(S) for S in train_x_2]\n",
    "    \n",
    "test_x_2 = np.array(np.linspace(0,1, testing_number), dtype='float32').reshape(testing_number, 1)\n",
    "test_y_2 = [put(S) for S in test_x_2]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Fit the GP to the training data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GaussianProcessRegressor(alpha=1e-10, copy_X_train=True,\n",
       "                         kernel=RBF(length_scale=1), n_restarts_optimizer=20,\n",
       "                         normalize_y=False, optimizer='fmin_l_bfgs_b',\n",
       "                         random_state=None)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sk_kernel = RBF(length_scale=1.0, length_scale_bounds=(1e-05, 1000.0)) \n",
    "gp = gaussian_process.GaussianProcessRegressor(kernel=sk_kernel, n_restarts_optimizer=20)\n",
    "gp.fit(train_x_2, train_y_2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And get the predicted values for the test points"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_pred_2, sigma_2 = gp.predict(test_x_2, return_std=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Comparing the GP predictions to the BS model. Note the shape of the variance bands."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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eadOndi9ezdpaWmUlpayZs0aunfvTqdOndi1axfp6ekUFxezfv36i3p77bXXKv5s9CNhqKPBy2QyMXnyZA4cOMCnn356xffZ2dnRLDSUUzNnktG/PwGLFuG5aRNHjhzRgnsREam21qxZc9FjOIDBgwezevXqy97j4eHBmDFjaN26NQMHDqRDhw6XvXbEiBHUr1//ojcKx44dS5s2bSoW1//u9ttvp3///oSHhxMWFlaxVcTTTz9Np06diIyMpEWLFlf18w0bNqxivdrvAgMDee655+jRowdt27alffv2DBgwgMDAQJ588kk6d+5M7969L7pv/vz5xMfH06ZNG1q2bMkbb7xxVX1cCauf1WiE6z2r8VIKCwsJDg6ma9eubNq06aruzc/P5+DPP9Ns6lScv/uOw2++iW3XrjRu3FjnPIqIyB/U9rMaJ02aRLt27Rg9enRVt1Lpqt1ZjdWVg4MDY8aMYcuWLZw6deqq7nVycqJ5y5YceeopSvz9aTpjBjlHjnD27FltsioiInXKTTfdxI8//sj//d//VXUrNUKdDV4A48ePB2DRokVXfa+LiwuNbrqJw3PmYMnJofljj5F0+jSpqalGtykiIlJt7d27l88+++yiBfpyeXU6eDVo0IABAwawZMkSCgoKrvp+T09PPLp14/hjj+G0bx9NFizg1KlTZGVlWaFbERERqenqdPCC37aWSE9Pv+bjE+rVq0dxVBTJMTF4rVtH0NatHD9+XG86iojIRbQUpfa5lt9pnQ9eERERtGrVigULFlzbX6DZTOPGjTk7cSK5nTsT+MwzOP/yCydOnND/yUREBPhtXXF6err+XahFysvLSU9Px8HB4aruq5MbqP43k8nEpEmTGDduHF999dU1nZ5ub29P45AQDj/1FG3uvZeGM2fy47JlpHh44O/vb4WuRUSkJgkODiYhIUHrgGsZBwcHgoODr+qeOrudxH/Lzc0lODiYvn37XnSEwtU6c+YM+Vu20HzSJNJHjuT4hAnceOON2tleRESkDtF2En/BxcWF++67jw0bNnDu3LlrrlOvXj3KevYkdcgQvFaswOPAAY4dO0ZpaamB3YqIiEhNpeD1HxMmTKC0tJTFixdfc43f13udmTSJ4qAgbnjySYqzszl79qyBnYqIiEhNpeD1H02bNqVv3768+eab1/VGor29PcGhoRx/9FHsTp2i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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize = (10, 6), facecolor='white', edgecolor='black')\n",
    "plt.plot(lb+(ub-lb)*test_x_2.flatten(), y_pred_2, color = 'red', label = 'GP Prediction')\n",
    "plt.plot(lb+(ub-lb)*test_x_2.flatten(), test_y_2, color = 'black', label = 'Analytical Model')\n",
    "plt.scatter(lb+(ub-lb)*train_x_2.flatten(), train_y_2, color = 'black', marker = '+', s = 100) \n",
    "plt.fill_between(lb+(ub-lb)*test_x_2.flatten(), (y_pred_2.T-2*sigma_2).flatten(), (y_pred_2.T+2*sigma_2).flatten(), color = 'grey', alpha=0.3)\n",
    "plt.legend(loc = 'best', prop={'size':10})\n",
    "plt.xlabel('S')\n",
    "plt.ylabel('V');\n",
    "plt.xlim([lb-10, ub+10]);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Portfolio value"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The predicted call and put values can be combined to estimate the value of a portfolio as a function of the underlying.\n",
    "\n",
    "Here we long 2 calls and short a put:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "# The Gaussian process' predictions\n",
    "y_pred = 2 * y_pred_1 - y_pred_2\n",
    "# Black-Scholes prices\n",
    "test_y = 2 * np.array(test_y_1) - np.array(test_y_2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sigma = np.sqrt(sigma_1*sigma_1 + sigma_2*sigma_2)\n",
    "\n",
    "plt.figure(figsize = (10, 6), facecolor='white', edgecolor='black')\n",
    "plt.plot(lb+(ub-lb)*test_x_2.flatten(), y_pred, color = 'red', label = 'GP Prediction')\n",
    "plt.plot(lb+(ub-lb)*test_x_2.flatten(), test_y.flatten(), color = 'black', label = 'Analytical Model')\n",
    "plt.fill_between(lb+(ub-lb)*test_x_2.flatten(), (y_pred.T-2*sigma).flatten(), (y_pred.T+2*sigma).flatten(), color = 'grey', alpha=0.3)\n",
    "plt.legend(loc = 'best', prop={'size':10})\n",
    "plt.xlim([lb-10, ub+10])\n",
    "plt.xlabel('S')\n",
    "plt.ylabel('$\\pi$');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
